package com.ophiux.wechat.cmnative.model;

import java.util.HashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;

import com.ophiux.wechat.utils.StringUtil;

/**
 * 普通商户-扫码支付模式1-收到回调后下单成后返回给微信的实体
 * xml格式
 * @author chenh
 *
 */
public class Native1ReturnModel {

	/**
	 * 返回状态码
	 * SUCCESS/FAIL,此字段是通信标识，非交易标识，交易是否成功需要查看result_code来判断
	 * 必填
	 */
	private String return_code;
	
	/**
	 * 返回信息	
	 * 返回信息，如非空，为错误原因;签名失败;具体某个参数格式校验错误.
	 * 非必填
	 */
	private String 	return_msg = "";
	
	/**
	 * 微信分配的公众账号ID
	 * 必填
	 */
	private String 	appid;
	
	/**
	 * 微信支付分配的商户号
	 * 必填
	 */
	private String mch_id;
	
	/**
	 * 微信返回的随机字符串
	 * 必填
	 */
	private String nonce_str;
	
	/**
	 * 调用统一下单接口生成的预支付ID
	 * 必填
	 */
	private String 	prepay_id;
	
	/**
	 * 业务结果
	 * SUCCESS/FAIL
	 * 必填
	 */
	private String 	result_code;
	
	/**
	 * 错误描述
	 * 当result_code为FAIL时，商户展示给用户的错误提
	 * 非必填
	 */
	private String 	err_code_des = "";
	
	/**
	 * 签名
	 * 返回数据签名，签名生成算法
	 * 必填
	 */
	private String sign;

	public String getReturn_code() {
		return return_code;
	}

	public void setReturn_code(String return_code) {
		this.return_code = return_code;
	}

	public String getReturn_msg() {
		return return_msg;
	}

	public void setReturn_msg(String return_msg) {
		this.return_msg = return_msg;
	}

	public String getAppid() {
		return appid;
	}

	public void setAppid(String appid) {
		this.appid = appid;
	}

	public String getMch_id() {
		return mch_id;
	}

	public void setMch_id(String mch_id) {
		this.mch_id = mch_id;
	}

	public String getNonce_str() {
		return nonce_str;
	}

	public void setNonce_str(String nonce_str) {
		this.nonce_str = nonce_str;
	}

	public String getPrepay_id() {
		return prepay_id;
	}

	public void setPrepay_id(String prepay_id) {
		this.prepay_id = prepay_id;
	}

	public String getResult_code() {
		return result_code;
	}

	public void setResult_code(String result_code) {
		this.result_code = result_code;
	}

	public String getErr_code_des() {
		return err_code_des;
	}

	public void setErr_code_des(String err_code_des) {
		this.err_code_des = err_code_des;
	}

	public String getSign() {
		return sign;
	}

	public void setSign(String sign) {
		this.sign = sign;
	}
	
	/**
	 * 将该对象转换为Map
	 * @return map
	 */
	public HashMap<String,String> toMap(){
		
		HashMap<String,String> map = new HashMap<String, String>();
		map.put("return_code", return_code);
		map.put("return_msg", return_msg);
		map.put("appid", appid);
		map.put("mch_id", mch_id);
		map.put("nonce_str",nonce_str);
		map.put("prepay_id", prepay_id);
		map.put("result_code", result_code);
		map.put("err_code_des", err_code_des);
		map.put("sign", sign);
		
		return map;
	}
	
	
	public SortedMap toSortMap(){
		
		HashMap<String,String> map = new HashMap<String, String>();
		map.put("return_code", return_code);
		if(!StringUtil.isEmpty(return_msg)){
			map.put("return_msg", return_msg);
		}
		map.put("appid", appid);
		map.put("mch_id", mch_id);
		map.put("nonce_str",nonce_str);
		map.put("prepay_id", prepay_id);
		map.put("result_code",result_code);
		
		if(!StringUtil.isEmpty(err_code_des)){
			map.put("err_code_des", err_code_des);
		}
		
		SortedMap<String, String> sortMap = new TreeMap<String, String>(map);
		
		return sortMap;
	}
	
}
